package main

import (
	"errors"
	"fmt"
	"strings"
	"time"
)

func main() {
	sliceTest()
}

/**
字符串相关的测试方法
*/
func strTest() {
	str1 := strings.Replace("goandjavagogogo", "go", "newGo", -1)
	fmt.Println(str1)
	var str string = "my name is go"
	upper := strings.ToUpper(str)
	fmt.Println(upper)
	split := strings.Split(str, " ")
	fmt.Println(split)
	fmt.Println()
}

/**
时间相关的测试方法
*/
func timeTest() {
	now := time.Now()
	fmt.Println(now)
	year := now.Year()
	fmt.Printf("今年是 %v 年\n", year)
}

/**
异常的处理
*/
func testError(num1 int, num2 int) {
	defer func() {
		error := recover()
		if error != nil {
			fmt.Println("-------------")
			fmt.Println("-错误信息为：", error)
		}
	}()
	fmt.Println(num1 / num2)
}

func testErrorw(num1 int, num2 int) (err error) {
	if num2 == 0 {
		return errors.New("除数不能为0")
	}
	result := num1 / num2
	fmt.Println(result)
	return nil
}

/**
异常的第二种测试方法
*/
func error2(num int, num2 int) (int, error) {
	if num2 == 0 {
		return -1, errors.New("除数不能是0")
	}
	return num / num2, nil
}

/**
测试数组的方法
*/
func arrarTest() {
	var intarray [4]int
	fmt.Println(intarray)
	fmt.Println(len(intarray))
	fmt.Println(&intarray[0])
	fmt.Println(&intarray[1])
	fmt.Println(&intarray[2])
	fmt.Println(&intarray[3])
}

/**
遍历数组
 */
func testFor() {
	var array [6]int = [6]int{1,2,3,4,5,6}
	for i := 0; i < len(array); i++ {
		fmt.Println("fori 遍历数组的值为 === :",array[i])
	}

	for index,value := range array{
		fmt.Println("数组的下标为: ", index, "数组的值为 :   ",value)
	}
}

func sliceTest()  {
	var array [6]int = [6]int{1,2,3,4,5,6}
	// 值的范围是左闭右开区间的
	var slice = array[1:4]
	fmt.Println(slice)
	fmt.Println(&slice[0])
	fmt.Println(len(slice))
	fmt.Println("---------------")
	slice[0] = 10
	fmt.Println(array)
	fmt.Println(slice)
}
